package com.zh.mediacommon.util;



import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Slf4j
public class AliMessageUtil {
    private String product;
    private String accessKeyId;
    private String accessKeySecret;
    private String domain;
    private String signName;
    private String templateCode;
   public boolean sendSms(String phoneNumber,String code) throws ClientException {
       System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
       System.setProperty("sun.net.client.defaultReadTimeout", "10000");

       //初始化acsClient,暂不支持region化
       IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
       DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
       IAcsClient acsClient = new DefaultAcsClient(profile);
       //组装请求对象-具体描述见控制台-文档部分内容
       SendSmsRequest request = new SendSmsRequest();
       //必填:待发送手机号
       request.setPhoneNumbers(phoneNumber);
       //必填:短信签名-可在短信控制台中找到
       request.setSignName(signName);
       //必填:短信模板-可在短信控制台中找到
       request.setTemplateCode(templateCode);
       //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
       request.setTemplateParam("{\"code\":\""+code+"\"}");
       //hint 此处可能会抛出异常，注意catch
       SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
       if(sendSmsResponse.getCode().equals("OK")) {
           log.info("短信发送成功....{}", sendSmsResponse.getCode());
           return true;
       }else {
           log.info("短信发送失败....{}", sendSmsResponse.getCode());
           return false;
       }
    }

}
